const isDate = (str) => {
    const reg =/^(\d{4})-(\d{2})-(\d{2})$/; 
    if(reg.test(str)){
      return true;
    } else {
      return false;
    }
  }
  
  const isDateTime = (str) => {
    const reg =/^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/;
    if(reg.test(str)){
      return true;
    } else {
      return false;
    }
  }
  
  function dateFormat(date, fmt) {
    let ret;
    date = new Date(date)
    const opt = {
      "Y+": date.getFullYear().toString(),        // 年
      "m+": (date.getMonth() + 1).toString(),     // 月
      "d+": date.getDate().toString(),            // 日
      "H+": date.getHours().toString(),           // 时
      "M+": date.getMinutes().toString(),         // 分
      "S+": date.getSeconds().toString()          // 秒
      // 有其他格式化字符需求可以继续添加，必须转化成字符串
    };
    for (let k in opt) {
      ret = new RegExp("(" + k + ")").exec(fmt);
      if (ret) {
        fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
      };
    };
    return fmt;
  }
  
  function getDaysBetween(startDate, endDate) {
    startDate = new Date(startDate).getTime()
    endDate = new Date(endDate).getTime()
    const days = (endDate - startDate) / (1 * 24 * 60 * 60 * 1000);
    return parseInt(days);
  }
  
  function getConstellation(date) { 
    date = new Date(date)
    const m = date.getMonth() + 1
    const d = date.getDate()
    const s = "魔羯水瓶双鱼牡羊金牛双子巨蟹狮子处女天秤天蝎射手魔羯";
    const arr = [20,19,21,21,21,22,23,23,23,23,22,22];
    return s.substr(m*2-(d<arr[m-1]?2:0),2);
  }
  
  module.exports = {
    isDate,               //  判断是否是日期格式（yyyy-mm-dd）
    isDateTime,           //  判断是否是日期时间格式（yyy-mm-dd hh:mm:ss）
    dateFormat,           //  日期格式化
    getDaysBetween,       //  获取两个日期差的天数
    getConstellation,     //  获取星座
  }